package com.xinnet.mms.config.service;

import java.sql.SQLException;
import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import com.xinnet.mms.entity.Product;
import com.xinnet.mms.entity.PublicConfig;

@Service
public interface FlowTurnConfigService {
	/**
	 * 
	 * 功能描述：取得产品设置信息集合
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月13日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public List<Product> getProductConfig() throws SQLException;
	/**
	 * 
	 * 功能描述：批量修改产品流转规则
	 *
	 * @param product
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月14日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updateFlowConfig(
			String ids,
			String sysallocationNodealholdtime,
			String pushNodealholdtime,
			String redevNodealholdtime,
			String startServiceCycle,
			String endServiceCycle,
			String goOpenseaTime) throws SQLException;
	/**
	 * 
	 * 功能描述：增加产品历史
	 *
	 * @param id
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月14日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void addProductHistoryFromConfig(String id) throws SQLException;
	/**
	 * 
	 * 功能描述：修改所有产品线的二次开发停顿期
	 *
	 * @param MiddleServiceCycle
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月14日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updateMiddleServiceCycle(@Param(value="middleServiceCycle") int MiddleServiceCycle) throws SQLException;
	/**
	 * 
	 * 功能描述：查询产品优先级列表
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月14日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public List<Product> getProductPriority() throws SQLException;
	/**
	 * 
	 * 功能描述：取得产品设置信息集合 (审核状态)
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月14日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public List<Product> getAuditProductConfig() throws SQLException;
	/**
	 * 
	 * 功能描述：设置产品规则为审核通过
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月14日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updateProductAuditYes(@Param(value="id") String id) throws SQLException;
	/**
	 * 
	 * 功能描述：设置产品规则为审核不通过
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月14日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updateProductAuditNo(@Param(value="id") String id) throws SQLException;
	/**
	 * 
	 * 功能描述：修改二次开发停顿期 加入审批
	 *
	 * @param day
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updateMiddleServiceCycleAddCheck(int day) throws SQLException;
	/**
	 * 
	 * 功能描述：查询二次开发停顿期
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public PublicConfig getMiddleServiceCycleInCheck() throws SQLException;
	/**
	 * 
	 * 功能描述：审批二次开发停留期为通过
	 *
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updateMiddleServiceCycleAuditYes(Integer cycle) throws SQLException;
	/**
	 * 
	 * 功能描述：审批二次开发停留期为拒绝
	 *
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updateMiddleServiceCycleAuditNo() throws SQLException;
	/**
	 * 
	 * 功能描述：取得业绩保留期
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public PublicConfig getPerfDayInCheck() throws SQLException;
	/**
	 * 
	 * 功能描述：修改业绩保留期加入审核
	 *
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updatePerfDayInCheck(int day) throws SQLException;
	/**
	 * 
	 * 功能描述：确认设置优先级
	 *
	 * @param id
	 * @param priority
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updatePriority(String id,int priority) throws SQLException;
	/**
	 * 
	 * 功能描述：审批业绩保留期为拒绝
	 *
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updatePerfDayAuditNo() throws SQLException;
	/**
	 * 
	 * 功能描述：审批业绩保留期为通过
	 *
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updatePerfDayAuditYes() throws SQLException;
	/**
	 * 
	 * 功能描述：将产品优先级加入审核
	 *
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月25日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updatePriorityAddCheck() throws SQLException;
	/**
	 * 
	 * 功能描述：设置产品优先级为审核通过
	 *
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月25日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updatePriorityAuditYes() throws SQLException;
	/**
	 * 
	 * 功能描述：设置产品优先级为审核拒绝
	 *
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月25日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updatePriorityAuditNo() throws SQLException;
	/**
	 * 
	 * 功能描述：取得产品优先级审核状态
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年2月25日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public PublicConfig getPriorityInCheck()throws SQLException;
	/**
	 * 
	 * 功能描述：取得到期预警时间
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月13日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public PublicConfig getWarningTime() throws SQLException;
	/**
	 * 
	 * 功能描述：修改到期预警时间
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月13日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updateWarningTime(int time) throws SQLException;
	/**
	 * 
	 * 功能描述：获取分配优先级产品列表
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public List<Product> getAllotPriority() throws SQLException;
	/**
	 * 
	 * 功能描述：取得分配默认产品
	 *
	 * @return
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public PublicConfig getDefaultProduct() throws SQLException;
	/**
	 * 
	 * 功能描述：修改默认分配产品
	 *
	 * @param productId
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updateDefaultProduct(@Param(value="productId") String productId) throws SQLException;
	/**
	 * 
	 * 功能描述：修改分配优先级
	 *
	 * @param product
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月24日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void updateAllotPriority(String productId,Integer priority) throws SQLException;
	
	/**
	 * 获取可用的业绩保留期
	 * @return
	 */
	public PublicConfig getEnablePerfDayInCheck();
	/**
	 * 
	 * 功能描述：取得即将流走客户提醒设置
	 * 
	 * @author 王湛智
	 * 
	 * @return
	 */
	public PublicConfig getPublicRemind() throws SQLException;
	/**
	 * 
	 * 功能描述：设置即将流走客户提醒时间
	 * 
	 * @author 王湛智
	 * 
	 * @param remind
	 * @return
	 * @throws SQLException
	 */
	public PublicConfig updatePublicRemind(Integer remind) throws SQLException;
}
